package com.turing.post.common.util;

import java.math.BigInteger;
import java.util.List;

import javax.ejb.Local;
import javax.ejb.Remote;

import com.turing.post.util.PCPSApplicationException;

/**
 * 菜单服务业务接口
 * 
 * @author 张小盼
 * 
 */
@Remote
@Local
public interface SysOpSapDao {

	/**
	 * 分页查询服务列表
	 * 
	 * @param page
	 *            页码
	 * @return 服务记录列表
	 */
	public List<SysOpSap> getSysOpSapList(String sapName, Integer page);

	/**
	 * 
	 * @return 服务记录数
	 */
	public BigInteger getSysOpSapTotal(String sapName);

	/**
	 * 查询主键最大值
	 * 
	 * @return
	 */
	public BigInteger getMaxSapId();

	/**
	 * 查询单条记录
	 * 
	 * @param sapId
	 *            服务编号
	 * @return 服务对象
	 */
	public SysOpSap getSysOpSapBySapId(Integer sapId);

	/**
	 * 根据服务编号查询页面上层文字内容
	 * 
	 * @param sapId
	 * @return
	 */
	public LeftMenu getTitleNameByMenuId(Integer menuId);

	/**
	 * 新增服务记录新增时自动为超级管理员添加权限
	 * 
	 * @param SysOpSap
	 *            服务对象
	 * @throws PCPSApplicationException
	 */
	public void insertSysOpSap(SysOpSap sysOpSap)
			throws PCPSApplicationException;

	/**
	 * @修改服务对象
	 * @param SysOpSap
	 *            服务对象
	 * @throws PCPSApplicationException
	 */
	public void updateSysOpSap(SysOpSap sysOpSap)
			throws PCPSApplicationException;

	/**
	 * @根据主键删除记录
	 * @param RoleId
	 * @throws PCPSApplicationException
	 */
	public void deleteSysOpSap(Integer sapId) throws PCPSApplicationException;

	/**
	 * 角色分权限时根据菜单组选择
	 * 
	 * @param menuGrpId
	 *            菜单组编号
	 * @return 服务列表
	 */
	public List<SysOpSap> getSysOpAclListByMenuGrpId(Integer menuGrpId);

	/**
	 * 角色分权时根据角色查询角色当前菜单组服务
	 * 
	 * @param roleId
	 *            角色编号
	 * @param menuGrpId
	 *            菜单组编号
	 * @return 服务列表
	 */
	public List<SysOpSap> getSysOpAclListByRoleIdAndMenuGrpId(Integer roleId,
			Integer menuGrpId);

	/**
	 * 角色授权
	 * 
	 * @param menuGrpId
	 *            菜单组编号
	 * @param roleId
	 *            角色编号
	 * @param sapIdList
	 *            服务编号集合
	 * @throws PCPSApplicationException
	 */
	public void insertSysOpAclByRoleIdAndSapIdList(Integer menuGrpId,
			BigInteger roleId, List<BigInteger> sapIdList)
			throws PCPSApplicationException;

	/**
	 * 根据用户查询代办事项
	 * 
	 * @param operId
	 * @return
	 */
	public List<SysOpSap> getAgencySysOpSapList(String roleIds);
	
	/**
	 * 根据用户得到用户菜单
	 * @param operId
	 * @return
	 */
	public List<SysOpSap> getSysOpSapListByOperId(BigInteger operId);
}
